package com.tio.server.client;

import com.tio.server.tcp.common.TioPacket;
import org.tio.client.ClientChannelContext;
import org.tio.client.ReconnConf;
import org.tio.client.TioClient;
import org.tio.client.TioClientConfig;
import org.tio.client.intf.TioClientHandler;
import org.tio.client.intf.TioClientListener;
import org.tio.core.Tio;
import org.tio.core.Node;

/**
 *
 * @author tanyaowu
 *
 */
public class TioClientStarter {

    //服务器节点
    public static Node serverNode = new Node("127.0.0.1", 8820);
    //handler, 包括编码、解码、消息处理
    public static TioClientHandler tioClientHandler = new TioClientAioHandler();
    //事件监听器，可以为null，但建议自己实现该接口，可以参考showcase了解些接口
    public static  TioClientListener aioListener = null;
    //断链后自动连接的，不想自动连接请设为null
    private static ReconnConf reconnConf = new ReconnConf(5000L);
    //一组连接共用的上下文对象
    public static TioClientConfig clientTioConfig = new TioClientConfig(tioClientHandler, aioListener, reconnConf);
    public static TioClient tioClient = null;
    public static ClientChannelContext clientChannelContext = null;
    /**
     * 启动程序入口
     */
    public static void main(String[] args) throws Exception {
        clientTioConfig.setHeartbeatTimeout(5000);
        tioClient = new TioClient(clientTioConfig);
        clientChannelContext = tioClient.connect(serverNode);
        //连上后，发条消息玩玩
        send();
    }

    private static void send() throws Exception {
        TioPacket packet = new TioPacket();
        packet.setBody("hello world".getBytes(TioPacket.CHARSET));
        Tio.send(clientChannelContext, packet);
    }

}